package com.help10000.rms.mvp.presenter

import android.util.Log
import com.amir.common.api.CustomObserver
import com.amir.common.beans.MyOrderEntity
import com.amir.common.mvp.model.Model
import com.amir.common.utils.Constant
import com.amir.common.utils.SPUtils
import com.amir.common.utils.ToastUtil
import com.amir.common.utils.Utils
import com.help10000.rms.mvp.view.MyOrderView
import com.help10000.rms.ui.activitys.OrderActivity
import com.help10000.rms.utils.LocationManager
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.Job
import kotlinx.coroutines.cancel
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext


class MyOrderPresenter(view: MyOrderView) : OrderPresenter(view) {
    var status = "2"
    var searchKey = ""


    fun getOrderList(page: Int,activity:OrderActivity) {
        // 使用父类的 coroutineScope，确保协程可被统一取消
        coroutineScope.launch(Dispatchers.IO) {
            try {
                val (lat, lng) = LocationManager.getLocation(activity)
                Log.d("我的订单详情定位", "获取到经纬度：lat=$lat, lng=$lng")
                // 仅UI操作切换到主线程
                withContext(Dispatchers.Main) {
                    val accessToken = SPUtils.getString(Constant.AccessToken) // 小驼峰命名
                    // 网络请求在IO线程执行
                    val myOrderApi = Model.getServer().myOrderApi(
                        accessToken,
                        kw = searchKey,
                        status = this@MyOrderPresenter.status, // 明确指向类属性
                        page = page,
                        lat = lat,
                        lng = lng)
                    Model.getObservable(myOrderApi, object : CustomObserver<MyOrderEntity>(mvpView) {
                        override fun success(t: MyOrderEntity) {
                            mvpView?.onDataSuccess(t.data.OrderList)
                        }

                        override fun onError(e: Throwable) {
                            super.onError(e)
                            // 处理网络错误
                            ToastUtil.show("获取订单列表失败：${e.message}")
                        }
                    })
                }
            } catch (e: Exception) {
                // 处理定位或其他异常
                withContext(Dispatchers.Main) {
                    ToastUtil.show("获取订单列表异常：：${e.message}")
                }
            }
        }
    }

    override fun getMvpView(): MyOrderView? {
        return super.getMvpView() as MyOrderView?
    }

    // 直接使用父类的 onDestroy()，无需重复实现
}